package ar.uba.fi.tecnicas.fabrica;

public class MateriaPrima 
{
	private TipoMateriaPrima tipo = null;
	private double cantidad = 0;
	
	public MateriaPrima(TipoMateriaPrima tipo, double cantidad)
	{
		this.tipo = tipo;
		this.cantidad = cantidad;
	}
	
	public TipoMateriaPrima getTipo()
	{
		return this.tipo;
	}
	
	public double getCantidad()
	{
		return this.cantidad;
	}
	
	public void setCantidad(double cantidad)
	{
		this.cantidad = cantidad;
	}
	
	public boolean tieneSuficiente(double cantidad) 
	{
		if (this.getCantidad() >= cantidad) 
			return true;
		else 
			return false;
	}
	
	public void aumentarCantidad(double cantidad)
	{
		this.setCantidad(this.getCantidad() + cantidad);
	}
	
	public MateriaPrima disminuirCantidad(double cantidad) 
	{
		this.setCantidad(this.getCantidad() - cantidad);

		MateriaPrima materiaPrima = new MateriaPrima(this.tipo, cantidad);

		return materiaPrima;
	}
	
	/**
	 * Redefinicion del equals para la verificacion de
	 * que una pieza sea TipoProducto
	 */
	public boolean equals(Object obj)
	{
		MateriaPrima materiaPrima = (MateriaPrima) obj;

		return 
			materiaPrima.getTipo().equals(this.getTipo()) &&
			materiaPrima.getCantidad() == this.getCantidad();
	}

}
